查看原文
其他

嵌入式系统中AI和ML的实际应用

逸珺 嵌入式客栈 2022-10-14

译自:https://blogs.windriver.com/wind_river_blog

/2020/01/practical-applications-for-ai-and-ml-in-embedded-systems/

基本背景

嵌入式开发往往是由部署高度优化和高效的系统需求所驱动。

人工智能通过采用解决复杂问题的新方法对现有业务或现有工作类型的革命而颠覆世界。无论您是否真正了解这种颠覆性革新所带来价值,以及如何将其应用到您的市场中,还是想弄清楚如何利用这项技术,对人工智能及其潜在应用的做一些基本了解已迫在眉睫。了解其潜在的应用必将成为您战略规划过程的关键一环。

尽管已进行了大肆宣传,但令人震惊的是,人们认为人工智能似乎是无所不能的魔术棒。然而魔术师们却仅仅能使用很小的一部分魔术技能以解决现实中的问题。这种反差引起人们强烈关注的一个领域是如何将人工智能应用于嵌入式系统,重点是如何在这些更受限的环境中部署人工智能应用。

定义和基本原理

为确保我们能有基本共识,让我们从不同技术及其对计算要求的基本背景开始介绍。

人工智能是一门计算机科学学科,致力于研究如何使用计算机来模仿人类智能。自20世纪计算机技术问世以来,人工智能就已经存在了,当时诸如Alan Turing之类的先驱者预见了计算机以人类可能以类似的方式解决问题的可能性。

经典的计算机编程通过在代码中显式编码算法来解决问题,指导计算机执行逻辑来处理数据并计算输出。相比之下,机器学习(ML)是一种AI方法,旨在寻找数据模型,并根据数据进行有效学习。有很多方法可以实现,包括预标记数据(或不标记数据),指导算法开发的强化学习,通过统计分析(或其他方法)提取特征,然后根据经过训练的数据集对输入数据进行分类,从而确定具有指定置信度的输出。

深度学习(DL)是ML的子集,它使用多层神经网络从迭代的大型数据集中训练模型。训练后,模型可以查看新数据集以推断出新数据。这种方法最近引起了很多关注,并已应用于各种问题,如图像处理和语音识别或金融资产建模。我们认为这种方法也对未来的关键基础架构和设备产生重大影响。

在嵌入式系统中应用ML/DL

由于创建精确模型所需的大量数据集以及训练模型所需的大量计算能力,因此通常在云或高性能计算环境中进行训练。相反,推论通常应用于靠近数据源的设备中。尽管分布式训练或边缘训练是一个非常令人感兴趣的话题,但它并不是当今大多数ML系统的部署方式。为了简单起见,我们假设训练是在云端进行的,而推理将在边缘或设备内进行。

如前所述,机器学习和深度学习是以数据为中心的学科。因此,创建和训练模型需要访问大型数据集以及为数据操作提供丰富环境的工具和环境。使用了简化数据处理,实现复杂的数学库和统计分析的框架和语言。这些通常是诸如Python之类的语言框架,然后在其上构建ML框架。有很多这样的框架,一些常见的框架包括TensorFlow,Caffe或PyTorch。

机器学习框架可用于模型开发和训练,也可用于在边缘使用经过训练的模型来运行推理引擎。因此,一种简单的部署方案是在设备中部署诸如TensorFlow的框架。由于它们需要丰富的运行时环境(例如Python),因此它们最适合Linux上的通用计算工作负载。由于需要在移动设备上运行机器学习,我们看到许多轻量级的推理引擎(TensorFlow Lite,PyTorch mobile)已经开始开发,需要较少的资源,但是这些引擎相较于其全功能版本仍然尚未广泛使用或还不成熟。

不需要完整的ML框架就可以解释和运行某些模型。例如,包含深层/卷积神经网络(DNN / CNN)库的计算机视觉框架OpenCV可以从TensorFlow和其他框架中读取模型。OpenCV和DNN库可在许多不支持更复杂或功能齐全的ML框架的紧凑型操作环境中使用,因此第二个部署选项是使用诸如OpenCV的框架部署推理引擎。

机器学习是高度计算密集型的,早期部署(例如在自动驾驶汽车中)依赖于专门的硬件加速器,例如GPU,FPGA或专门的神经网络。随着这些加速器在SoC中变得越来越普遍,我们可以预期看到高效的引擎在受限设备中运行机器学习模型。发生这种情况时,另一个部署选项是编译经过训练的模型,以在DNN加速器上进行优化部署。一些这样的工具已经存在,并且需要现代的编译器框架(例如LLVM)以模型前端和硬件加速器后端为目标。

对嵌入式开发的影响

嵌入式开发通常是由部署高度优化和高效的系统的需求所驱动。经典的开发方法是从非常受限的硬件和软件环境开始,并仅在需要时才添加功能。这是RTOS应用程序的典型应用。

随着技术的日新月异,我们看到开发方法首先要使复杂的系统工作,然后在以后的阶段进行优化以进行部署。与软件的许多重大进步一样,开源社区是机器学习中创新步伐和规模的重要推动引擎。包含在开源中并通常从Linux开发开始的工具和框架正在迅速成为主要的创新途径。因此,同时使用实时操作系统(RTOS)和Linux或将开源从Linux迁移到RTOS是必须得到支持的重要开发旅程。

无论公司是刚刚起步还是准备部署优化的机器学习解决方案,他们都必须构建基础技术和丰富的开发环境来抽象化复杂性并启用异构运行时环境。

END

果喜欢右下点个在看,也会让我倍感鼓舞

往期精彩推荐




▲深度解析U-Boot网络实现(长篇好文)
▲手把手教系列之移动平均滤波器C实现
▲读U-Boot源码-C语言编程大法总结篇一
▲读U-Boot源码-C语言编程技巧总结篇二
▲U-Boot架构浅析
▲手把手教系列之IIR数字滤波器设计实现

关注置顶:扫描左下二维码关注公众号加星

讨论加群:扫描右下二维码添加,发送“加群”

关注

加群


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存